Matthias Clasen [Tue, 18 Feb 2020 04:20:05 +0000 (23:20 -0500)]
x11: Remove some leftover event struct access
Matthias Clasen [Tue, 18 Feb 2020 03:18:56 +0000 (22:18 -0500)]
x11: Stop using the send_event event field
The only use of this field is printing it out in a
debug message. We are going to drop it.
Matthias Clasen [Mon, 17 Feb 2020 14:17:42 +0000 (09:17 -0500)]
Always deliver focus events to toplevels
Its was GTK expects. This change gets rid of the "Ignoring an
unexpected focus event from GDK on a non-toplevel surface."
warning.
Matthias Clasen [Mon, 17 Feb 2020 12:40:31 +0000 (07:40 -0500)]
Drop gtk_widget_event from API
We don't want events to be injected randomly from
the outside. Plus, there's no way to create such
events from the outside now.
Matthias Clasen [Tue, 18 Feb 2020 03:11:56 +0000 (22:11 -0500)]
events: reorganize getters
Restructure the getters for event fields to
be more targeted at particular event types.
Update all callers, and replace all direct
event struct access with getters.
As a side-effect, this drops some unused getters.
Matthias Clasen [Tue, 18 Feb 2020 03:11:03 +0000 (22:11 -0500)]
Drop gdk_set/get_show_events
We don't need a separate api to turn on debugging
for events.
Matthias Clasen [Sun, 16 Feb 2020 16:09:02 +0000 (11:09 -0500)]
Strip const from GdkEvent
Events are refcounted structs, and we generally don't
pass these as const.
Matthias Clasen [Sun, 16 Feb 2020 07:53:44 +0000 (02:53 -0500)]
events: Drop all setters
GdkEvent is now truly readonly.
Matthias Clasen [Sun, 16 Feb 2020 07:50:34 +0000 (02:50 -0500)]
events: Drop target and related target
GTK no longer uses this, so we can drop it.
Matthias Clasen [Sun, 16 Feb 2020 07:50:09 +0000 (02:50 -0500)]
main: Stop calling gdk_event_set_target
GTK is no longer relying on this.
Matthias Clasen [Sun, 16 Feb 2020 07:47:39 +0000 (02:47 -0500)]
Stop using gdk_event_get_target
We can now get the target widget from the gesture
that we are using to find the event in the first
place.
Matthias Clasen [Sun, 16 Feb 2020 07:46:40 +0000 (02:46 -0500)]
gesture: Keep the target widget for events
We already store the events; keep the target widget
in addition. This is a step towards getting rid of
gdk_event_get_target.
Matthias Clasen [Sun, 16 Feb 2020 07:46:05 +0000 (02:46 -0500)]
eventcontroller: Make the target widget available
Make it possible for event controllers to obtain
the target widget during handle_event.
Matthias Clasen [Sun, 16 Feb 2020 07:20:34 +0000 (02:20 -0500)]
Explicitly pass the target to handle_event
Pass the event propagation target explicitly down to
the event controllers. This is a step towards getting
rid of gdk_event_set_target.
Matthias Clasen [Sun, 16 Feb 2020 06:50:39 +0000 (01:50 -0500)]
Stop looking at the related target for filtering
We are now sending crossing events (which are the only ones
where a related target makes sense) via handle_crossing.
Matthias Clasen [Sun, 16 Feb 2020 06:48:50 +0000 (01:48 -0500)]
Reinstate filtering for crossing events
The event propagation limit should apply to crossing events
as well.
Matthias Clasen [Sun, 16 Feb 2020 01:47:23 +0000 (20:47 -0500)]
Make crossing events handled the same way
Matthias Clasen [Thu, 13 Feb 2020 01:26:29 +0000 (20:26 -0500)]
New focus change handling
Instead of relying on gdk's antiquated crossing events,
create a new GtkCrossingData struct that contains the
actual widgets, and a new event controller vfunc that
expects this struct. This also saves us from making sense
of X's crossing modes and details, and makes for a
generally simpler api.
The ::focus-in and ::focus-out signals of GtkEventControllerKey
have been replaced by a single ::focus-change signal that
takes GtkCrossingData as an argument. All callers have
been updated.
Matthias Clasen [Sun, 16 Feb 2020 04:33:17 +0000 (23:33 -0500)]
wip: scrolledwindow stop using targets
Matthias Clasen [Sun, 16 Feb 2020 02:04:58 +0000 (21:04 -0500)]
main: Drop gtk_get_event_target
This is no longer used.
Matthias Clasen [Tue, 18 Feb 2020 02:21:05 +0000 (21:21 -0500)]
tooltip: stop using gtk_get_event_target
Matthias Clasen [Sun, 16 Feb 2020 02:04:08 +0000 (21:04 -0500)]
Stop using gtk_get_event_target
This is just a thin wrapper around gdk_event_get_target,
so use that directly.
Matthias Clasen [Thu, 13 Feb 2020 05:08:49 +0000 (00:08 -0500)]
Pass translated coordinates outside the event
We want to make events readonly, so stop translating
their coordinates and instead pass the translated
coordinates separately, when propagating events.
Matthias Clasen [Sun, 16 Feb 2020 05:39:11 +0000 (00:39 -0500)]
Drop GDK_NOTHING
Events of type GDK_NOTHING are good for nothing.
Matthias Clasen [Sat, 15 Feb 2020 20:40:03 +0000 (15:40 -0500)]
Make GdkEvent a boxed type
Matthias Clasen [Sat, 15 Feb 2020 20:07:24 +0000 (15:07 -0500)]
Stop using g_object_ref/unref on events
Use gdk_event_ref/unref instead of g_object_ref/unref.
Events will stop being object soon.
Matthias Clasen [Sat, 15 Feb 2020 19:22:33 +0000 (14:22 -0500)]
Drop gdk_event_new and gdk_event_copy
These functions are no longer used outside of gdkevents.c.
Matthias Clasen [Sat, 15 Feb 2020 19:19:50 +0000 (14:19 -0500)]
display: Stop using gdk_event_copy
Events are effectively readonly in GDK now, so we can just
take a reference, no need for a copy.
Matthias Clasen [Sat, 15 Feb 2020 18:23:55 +0000 (13:23 -0500)]
win32: Use event constructors
Matthias Clasen [Tue, 18 Feb 2020 05:19:26 +0000 (00:19 -0500)]
x11: Pass the right surface to the dnd filter
Matthias Clasen [Sat, 15 Feb 2020 15:45:28 +0000 (10:45 -0500)]
x11: Remove an unnecessary check
We are not creating GDK_NOTHING events anymore. Yay
Matthias Clasen [Sat, 15 Feb 2020 17:09:31 +0000 (12:09 -0500)]
x11: change event translator interface
Make the event translator return a new event, instead of
filling in a half-constructed one.
Update the two implementation in GdkX11Display and
GdkDeviceManagerXI2.
Matthias Clasen [Sat, 15 Feb 2020 15:43:29 +0000 (10:43 -0500)]
x11: Change the wm protocols filter api
Instead of passing a half-constructed event and expect
it to be filled in, pass the surface as in argument, and
add an out argument for a newly constructed GdkEvent.
Matthias Clasen [Sat, 15 Feb 2020 15:34:28 +0000 (10:34 -0500)]
x11: Don't pass a GdkEvent to shape cache filters
The filter functions never look at that event, and
we want to get out of the business of passing half-
constructed events around.
Matthias Clasen [Sat, 15 Feb 2020 15:30:55 +0000 (10:30 -0500)]
x11: Don't pass a GdkEvent to xsettings filters
The filter functions never look at that event, and
we want to get out of the business of passing half-
constructed events around.
Matthias Clasen [Sat, 15 Feb 2020 16:19:59 +0000 (11:19 -0500)]
events: Drop GDK_DESTROY
No backend is emitting GDK_DESTROY events anymore, so no
need to carry this around.
Matthias Clasen [Sat, 15 Feb 2020 16:11:13 +0000 (11:11 -0500)]
gtk: Stop handling GDK_DESTROY differently from GDK_DELETE
We don't have child windows anymore, so there is no difference.
Matthias Clasen [Sat, 15 Feb 2020 16:12:22 +0000 (11:12 -0500)]
x11: Don't generate GDK_DESTROY events
GTK does not differentiate between GDK_DESTROY and GDK_DELETE
anyway.
Matthias Clasen [Sat, 15 Feb 2020 14:33:53 +0000 (09:33 -0500)]
x11: use event constructors
This is not quite complete and only handles the
simple cases.
Matthias Clasen [Sat, 15 Feb 2020 00:07:09 +0000 (19:07 -0500)]
broadway: Use event constructors
Convert all of Broadways event handling to use the new
constructors.
Matthias Clasen [Sat, 15 Feb 2020 15:12:41 +0000 (10:12 -0500)]
wip: Use event constructors in the testsuite
This doesn't work because the constructors aren't exported,
so remove the gestures text temporarily, until we figure
out how to deal with it.
Matthias Clasen [Sat, 15 Feb 2020 19:07:09 +0000 (14:07 -0500)]
textview: Stop using gdk_event_copy
Matthias Clasen [Sat, 15 Feb 2020 19:06:43 +0000 (14:06 -0500)]
main: Use constructors instead of gdk_event_copy + rewriting
Matthias Clasen [Sat, 15 Feb 2020 14:55:58 +0000 (09:55 -0500)]
imcontextsimple: Use event constructors
Matthias Clasen [Sat, 15 Feb 2020 00:29:12 +0000 (19:29 -0500)]
widget: Port emulation code to constructors
Use the new event constructors when generating events
for emulating presses.
Matthias Clasen [Sat, 15 Feb 2020 15:13:19 +0000 (10:13 -0500)]
window: Use event constructors
Matthias Clasen [Sat, 15 Feb 2020 20:30:40 +0000 (15:30 -0500)]
main: Use event constructors
At the same time, stop setting child_surface in
crossing events. Nothing in GTK looks at it.
Matthias Clasen [Sat, 15 Feb 2020 18:19:48 +0000 (13:19 -0500)]
gdk: Use constructor for grab broken
Matthias Clasen [Sat, 15 Feb 2020 14:36:19 +0000 (09:36 -0500)]
gdk: Use event constructors for dnd
Matthias Clasen [Fri, 14 Feb 2020 23:23:45 +0000 (18:23 -0500)]
events: Drop x_root/y_root
We are not using these fields anymore.
Matthias Clasen [Fri, 14 Feb 2020 23:19:13 +0000 (18:19 -0500)]
broadway: Stop setting x_root/y_root in events
These fields are not used in GTK anymore, and are
going away soon.
Matthias Clasen [Fri, 14 Feb 2020 23:18:10 +0000 (18:18 -0500)]
x11: Stop setting x_root/y_root in events
These fields are not used by GTK anymore and
will be going away soon.
Matthias Clasen [Fri, 14 Feb 2020 23:17:13 +0000 (18:17 -0500)]
x11: Stop relying on root coordinates in events
The X11 dnd code was still using x_root/y_root in
GdkEventMotion in a couple of places. Stop doing so,
these field are going away soon.
Matthias Clasen [Fri, 14 Feb 2020 23:15:38 +0000 (18:15 -0500)]
Remove root coords from the GdkDrop api
Matthias Clasen [Fri, 14 Feb 2020 22:46:56 +0000 (17:46 -0500)]
wayland: Clean up coordinate handling
Get rid of the get_coordinates function and just
use the structs directly.
Matthias Clasen [Fri, 14 Feb 2020 13:10:21 +0000 (08:10 -0500)]
wayland: Use event constructors
Convert all of Waylands event handling to use the new
constructors.
Matthias Clasen [Fri, 14 Feb 2020 13:09:59 +0000 (08:09 -0500)]
gdk: Add event constructors
Add private API to construct events. This is a step towards
making events readonly, and not objects anymore.
The constructors here are sufficient to convert the Wayland
backend over. More may be added for other backends as needed.
Open issues:
- history
Matthias Clasen [Tue, 18 Feb 2020 00:44:07 +0000 (19:44 -0500)]
Make a11y testsuite pass
Matthias Clasen [Thu, 20 Feb 2020 19:08:45 +0000 (19:08 +0000)]
Merge branch 'master' into 'master'
build: gdk/wayland/cursor depends on wayland-client
See merge request GNOME/gtk!1453
Dominique Leuenberger [Thu, 20 Feb 2020 16:07:02 +0000 (17:07 +0100)]
build: gdk/wayland/cursor depends on wayland-client
On distros where wayland-client.h might not be directly in /usr/include
we fail to find the correct headers otherwise.
Timm Bäder [Thu, 20 Feb 2020 09:30:14 +0000 (10:30 +0100)]
scale: Remove useless extra local variable
Timm Bäder [Thu, 20 Feb 2020 09:22:29 +0000 (10:22 +0100)]
scale: Remove unused member
Timm Bäder [Wed, 19 Feb 2020 17:13:55 +0000 (18:13 +0100)]
emojichooser: Add style class to emoji toolbar
Closes #1013
Timm Bäder [Wed, 19 Feb 2020 08:18:25 +0000 (09:18 +0100)]
filechooserwidget: Fold function into only caller
Timm Bäder [Wed, 19 Feb 2020 08:12:12 +0000 (09:12 +0100)]
filechooserwidget: Use a proper GtkPopoverMenu
Instead of a fake one where we add .menu to a normal popover. This makes
the menu look like other context menus.
Timm Bäder [Wed, 19 Feb 2020 07:11:05 +0000 (08:11 +0100)]
filechoosererrorstack: Set a layout manager
Otherwise it doesn't know what to do with its child widget.
Timm Bäder [Wed, 19 Feb 2020 06:35:40 +0000 (07:35 +0100)]
filechooserwidget: Allow typing a location in recent mode
This is triggered by typing / or hitting Ctrl+L. Since we don't have a
visual indicator for this mode right now anyway, the reason for not
allowing it in recent mode cited in the comment just above the
early-exit is irrelevant.
Closes #2178
Timm Bäder [Wed, 19 Feb 2020 06:35:29 +0000 (07:35 +0100)]
filechooserwidget: Remove unused constants
Timm Bäder [Mon, 17 Feb 2020 14:46:41 +0000 (15:46 +0100)]
text: Remove gtk_text_get_im_context()
Unused.
Timm Bäder [Mon, 17 Feb 2020 08:38:34 +0000 (09:38 +0100)]
docs: Remove focus_tracking.txt
All the info in there is outdated and not useful.
Timm Bäder [Mon, 17 Feb 2020 08:37:49 +0000 (09:37 +0100)]
docs: Remove developers.txt
Everything in there has either been removed in the past or is outdated
information.
Timm Bäder [Mon, 17 Feb 2020 08:36:52 +0000 (09:36 +0100)]
docs: Remove dnd_internals.txt
This is either already completely outdated or will be soon.
Timm Bäder [Tue, 18 Feb 2020 15:23:26 +0000 (16:23 +0100)]
spinbutton: Remove manual queue_draw() calls
Everything is automatically redrawn when changing the value, etc.
Timm Bäder [Tue, 18 Feb 2020 10:03:37 +0000 (11:03 +0100)]
popvermenu: Clarify css node docs
We add the .menu css class to the popover main node, not its contents
node.
Timm Bäder [Tue, 18 Feb 2020 09:36:04 +0000 (10:36 +0100)]
aboutdialog: Clarify docs and fix preconditions
Timm Bäder [Tue, 18 Feb 2020 09:02:38 +0000 (10:02 +0100)]
modelbutton: Un-select on mouse leave
This brings us closer to the old GtkMenuItem behavior and also makes
more sense.
Timm Bäder [Tue, 18 Feb 2020 08:42:29 +0000 (09:42 +0100)]
aboutdialog: Replace visited_links GList with GPtrArray
Timm Bäder [Tue, 18 Feb 2020 08:31:32 +0000 (09:31 +0100)]
aboutdialog: Use new GtkStackPage API
Timm Bäder [Tue, 18 Feb 2020 08:27:42 +0000 (09:27 +0100)]
stack: Add GtkStackPage:visible accessors
Benjamin Otte [Wed, 19 Feb 2020 18:57:14 +0000 (18:57 +0000)]
Merge branch 'wip/xdg-popup-async-relayout' into 'master'
Synchronous popup layout
See merge request GNOME/gtk!1241
Emmanuele Bassi [Wed, 19 Feb 2020 15:35:21 +0000 (15:35 +0000)]
Merge branch 'ci-flatpak' into 'master'
ci: Update flatpak jobs
See merge request GNOME/gtk!1451
Emmanuele Bassi [Wed, 19 Feb 2020 15:04:58 +0000 (15:04 +0000)]
ci: Update flatpak jobs
The CI infrastructure was changed to run with fewer privileges, so we
need to adapt our Flatpak jobs to compensate.
See: https://mail.gnome.org/archives/desktop-devel-list/2020-February/msg00055.html
Jonas Ådahl [Sun, 16 Feb 2020 11:59:24 +0000 (12:59 +0100)]
gdk/surface: Replace move_to_rect() with GdkPopupLayout based API
Replace the gdk_surface_move_to_rect() API with a new GdkSurface
method called gdk_surface_present_popup() taking a new GdkPopupLayout
object describing how they should be laid out on screen.
The layout properties provided are the same as the ones used with
gdk_surface_move_to_rect(), except they are now set up using
GdkPopupLayout.
Calling gdk_surface_present_popup() will either show the popup at the
position described using the popup layout object and a new unconstrained
size, or reposition it accordingly.
In some situations, such as when a popup is set to autohide, presenting
may immediately fail, in case the grab was not granted by the display
server.
After a successful present, the result of the layout can be queried
using the following methods:
* gdk_surface_get_position() - to get the position relative to its
parent
* gdk_surface_get_width() - to get the current width
* gdk_surface_get_height() - to get the current height
* gdk_surface_get_rect_anchor() - to get the anchor point on the anchor
rectangle the popup was effectively positioned against given
constraints defined by the environment and the layout rules provided
via GdkPopupLayout.
* gdk_surface_get_surface_anchor() - the same as the one above but for
the surface anchor.
A new signal replaces the old "moved-to-rect" one -
"popup-layout-changed". However, it is only intended to be emitted when
the layout changes implicitly by the windowing system, for example if
the monitor resolution changed, or the parent window moved.
Jonas Ådahl [Wed, 19 Feb 2020 08:31:32 +0000 (09:31 +0100)]
gdk/surface: Reset position after hiding
The x and y position of GdkSurface is only valid when visible, so reset
them to their inital state after hiding.
Jonas Ådahl [Sun, 16 Feb 2020 15:42:52 +0000 (16:42 +0100)]
wayland: Simplify logic deciding whether to use xdg_popup
From a handful of hueristics and guess-work, to a single
`surface->surface_type == GDK_SURFACE_POPUP`.
Jonas Ådahl [Sun, 16 Feb 2020 15:24:12 +0000 (16:24 +0100)]
wayland: Fix top-most-popup check
We can map a non-grabbing popup wherever, it's just the grabbing
popup-chain that needs to be ensured not to break any ordering rules.
Fix this by managing two lists; one of open popups, and another for
grabbing ones.
Jonas Ådahl [Sat, 15 Feb 2020 23:32:26 +0000 (00:32 +0100)]
gdk: Move GdkGeometry declaration to gdktypes.h
Jonas Ådahl [Sat, 15 Feb 2020 23:32:05 +0000 (00:32 +0100)]
gdk: Move GdkGravity to gdktypes.h
Jonas Ådahl [Sat, 15 Feb 2020 23:28:01 +0000 (00:28 +0100)]
x11: Make gdk_surface_get_position() return relative position
The returned position should be relative to the parent surface, but
GdkSurface::x,y were only managed properly for O-R windows. This makes
it correct for regular windows too.
Jonas Ådahl [Mon, 10 Feb 2020 09:55:59 +0000 (10:55 +0100)]
wayland: Simplify popup parent discovery
Now popups surfaces are always created with the parent set, so we don't
need to implement vorious guess work to try to find what the parent
might be. Remove that code and just use GdkSurface::parent which is
where the parent set during construction ends up at.
Jonas Ådahl [Mon, 10 Feb 2020 08:56:18 +0000 (09:56 +0100)]
wayland: Remove old "gdk-attached-grab-surface" hackery
The corresponding code in gtk/ is long gone, so it's luckly unused these
days.
Jonas Ådahl [Tue, 7 Jan 2020 16:13:22 +0000 (17:13 +0100)]
wayland/surface: Add per surface configuration event queues
Add event queues specifically for surface configuration events
(xdg_surface.configure, xdg_toplevel.configure, xdg_popup.configure etc)
so that a configuration can be completed without having side effects on
other surfaces. This will be used to synchronously configure specific
GdkSurfaces, as is needed by the Gtk layout mechanisms.
Jonas Ådahl [Tue, 10 Dec 2019 18:23:17 +0000 (19:23 +0100)]
gdk/wayland/surface: Use dedicated bool for frame callback freezing
The freezing is conditioned on various state, so lets make the thawing a
bit more robust. Without this there was a risk that we'd thaw too many
times if there was a frame callback requested while the conditions for
the freezing were not met.
Jonas Ådahl [Wed, 24 Jul 2019 16:44:32 +0000 (18:44 +0200)]
wayland: Remove position method split
Position can only be done via gdk_surface_queue_relayout(); the legacy
way is no longer possible, so remove the legacy positioning code.
Jonas Ådahl [Mon, 22 Jul 2019 20:27:37 +0000 (22:27 +0200)]
gdk/surface: Use enum type for surface type
Jonas Ådahl [Mon, 22 Jul 2019 20:26:39 +0000 (22:26 +0200)]
tests/popover: Add check box for switching autohide prop
Jonas Ådahl [Wed, 24 Jul 2019 13:45:34 +0000 (15:45 +0200)]
popover: Unrealize when autohide prop changes
Changing the autohide property means the popover needs to be remapped.
Remapping may need user interaction, so lets just unrealize the popover
if the property changes, forcing the application to remap it should it
be shown again.
Timm Bäder [Wed, 19 Feb 2020 07:43:51 +0000 (07:43 +0000)]
Merge branch 'file-filter-name-property' into 'master'
GtkFileFilter: Add a GObject property for the name
See merge request GNOME/gtk!376
Matthias Clasen [Wed, 19 Feb 2020 01:50:49 +0000 (01:50 +0000)]
Merge branch 'icontheme-api' into 'master'
Icontheme api
Closes #2410
See merge request GNOME/gtk!1449
Matthias Clasen [Tue, 18 Feb 2020 05:56:37 +0000 (00:56 -0500)]
icontheme: Update the api
Add properties, and use string arrays instead of lists.
Among other things, this renames gtk_icon_theme_list_icons
to gtk_icon_theme_get_icon_names.
Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2410